<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>正则表达式基础</title>
</head>

<body>
    <script>
        // 转义符号 \
        // 转义字符 \字符
        var str1 = "我是\"程序员\"";

        var str = "我是\"程序员\"";
        console.log(str);
        // \n \r \t是针对编辑
        //js是不允许字符串多行的
        // var str ='<h1>43</h1>
        //           <h2>123</h2>
        //           <h3>12</h3>'

        // 通过转义字符，转义为空格
        var str = '<h1>43</h1>\
                  <h2>123</h2>\
                  <h3>12</h3>'

        // RegExp=regular expression

        var reg = new RegExp('test'),
            str = 'This is a test',
            str1 = 'This is a Test';
        //字符串片段，大小写敏感，连续的字符
        console.log(reg.test(str)); //true
        console.log(reg.test(str1)); //false
        //g  全局匹配
        var reg = new RegExp('test', 'i');
        console.log(reg.test(str1)); //false

        //字面量
        var reg = /test/;
        console.log(reg.test(str) + '字面量'); //true
        //m 多行匹配
        var reg = /^Test/gim;
        var str = "This is a test .\nTest is important"
        console.log(str.match(reg));

        //修饰符
        // i 忽略大小写
        // g 全局匹配
        // m 多行匹配

        //表达式 []是一位的可匹配范围
        //匹配上的字符就不再匹配，连续的匹配
        var str = "1231sflsdf33sfd12fd0",
            reg = /[123456789][123456789][123456789]/g;
        console.log(str.match(reg));


        var str = "wxyz",
            // 匹配w、x并不是w到x之间的区间
            //三个中括号，表示连续的三位
            reg = /[wx][xy][z]/g;
        console.log(str.match(reg));

        //区间的写法
        var str = "1231FaSDsfSDFlsdf33sfd1FSDfFA2fFDSd0",
            reg = /[0-9][A-Z][a-z]/g;
        console.log(str.match(reg));

        var str = "1231FaSDsfSDFlsdf33sfd1FSDfFA2fFDSd0",
            reg = /[0-9A-z][A-Z][a-z]/g;
        console.log(str.match(reg));

        // 非
        var str = "1231FaSDsfSDFlsdf33sfd1FSDfFA2fFDSd0",
            reg = /[^0][A-Z][a-z]/g;
        console.log(str.match(reg));

        //或
        var str = "1231FaSDsfSDFlsdf33s231fd1FSDfFA2fFDSd0",
            reg = /123|231/g;
        console.log(str.match(reg));

        // 元字符 正则使用的转义字符
        // 一个元字符，代表匹配一位
        // \w [0-9A-z_]
        // \W [^\w]
        var str = "1231abFaSDsfSDFlsdf33s231fd1FSDfFA2fFDSd0",
            reg = /\wab/g;
        console.log(str.match(reg));
        // \d [0-9]
        // \D [^d]
        var str = "1231abFaSDsfSDFlsdf33s231fd1FSDfFA2fFDSd0",
            reg = /\dab/g,
            reg1 = /\Dab/;
        console.log(str.match(reg));
        console.log(str.match(reg1));
        // \s [\r\n\t\v\f]
        // \S [^/s]
        var str = "1231 abFaSDsfSDFlsdf33s231fd1FSDfFA2fFDSd0",
            reg = /\sab/g;
        console.log(str.match(reg));
        // \b 单词边界
        // \B 非单词边界
        // . 可以匹配除了回车和换行的所有字符
    </script>
</body>

</html>